import ChessBase from "../../base";
import TiaoBullet from "./bullet";

const CHESS_IMG_SRC = 'images/tiles/tiao_2.png'; // 棋子贴图
const ATTACK_INTERVAL = 30; // 攻击间隔帧数
const BULLET_DAMAGE = 50; // 子弹伤害
const BULLET_SPEED = 30;  // 子弹速度
const BULLET_PENETRATION = 1;  // 子弹穿透
const DESCRIPTION = "子弹能穿透1个敌人";
export default class Tiao2 extends ChessBase {
    shoot() {
        if (GameGlobal.databus.enemys.length > 0) {
            // 以当时最下方的敌人，y值最大的那个为目标
            let enemys = GameGlobal.databus.enemys.filter((e) => e.isActive);
            if (enemys.length > 0) {
                this.target = enemys.reduce((max, current) =>
                    current.y > max.y ? current : max
                );

                const bullet = GameGlobal.databus.pool.getItemByClass('bullet', TiaoBullet); // 子弹样式
                // 子弹初始位置
                bullet.init(this.x + this.width / 2 - bullet.width / 2, this.y - 10, BULLET_SPEED, BULLET_DAMAGE, BULLET_PENETRATION, this.target.x + this.target.width / 2 - bullet.width / 2, this.target.y + this.target.height / 2 - bullet.height / 2);
                GameGlobal.databus.bullets.push(bullet);
                // GameGlobal.musicManager.playShoot(); // 播放射击音效
            }
        }
    }

    constructor() {
        super(CHESS_IMG_SRC, DESCRIPTION);
    }

    update() {
        if (GameGlobal.databus.isGameOver) {
            return;
        }

        // 每x帧自动射击一次（如果有目标）
        if (GameGlobal.databus.frame % ATTACK_INTERVAL === 0) {
            this.shoot(); // 棋子射击
        }
    }
}